home *** CD-ROM | disk | FTP | other *** search
/ Freelog 117 / FreelogNo117-OctobreNovembre2013.iso / Programmation / jedit / jedit5.1.0install.exe / {app} / modes / tcl.xml < prev    next >
Extensible Markup Language  |  2013-07-28  |  24KB  |  686 lines

  1. <?xml version="1.0"?>
  2.  
  3. <!DOCTYPE MODE SYSTEM "xmode.dtd">
  4.  
  5. <!-- Tcl mode by Michael Jacobson.
  6.      cplusplus and pascal modes used as reference.
  7.     2006/10/20 Jean-Francois Larvoire:
  8.      - Fixed comments detection: Only # at the beginning of Tcl commands are comments!
  9.      - Quoted strings can span multiple lines.
  10.      - Added recursive in-string substituted command and variable analysis.
  11.      - Added numerous missing tcl keywords and variables up to version 8.4.14.
  12.      - Removed $ on global variable keywords, as they're often used with $::.
  13.      - Added Expect keywords, as KEYWORD2. (send was already in tk as KEYWORD2)
  14.      - Avoid colouring substituted variables that are homonyms of a keyword.
  15.      - Highlight hexadecimal numbers too.
  16.     2006/10/23 Jean-Francois Larvoire:
  17.      - Strings and blocks only begin at word start.
  18.      - Updated {# comment detection to manage the whole {} block. This catches
  19.        all { and }, and makes it unnecessary to define them as KEYWORDs.
  20.      - Bug fix: Do not delegate content evaluation for ${} scalar variables.
  21.     2009/02/10: Albert Davidson Chou - added lineComment property for TCL mode (2119958)
  22.  
  23.     Limitations:
  24.      - Unbalanced quotes or brackets within braces, such as in regular expressions,
  25.   will confuse the analysis. Workaround: If possible, use a \ to escape the
  26.   unbalanced character. Else add a ;# comment with a closing " or ].
  27.     Known bugs:
  28.      - Continuation line detection does not work. Same bug as espace chars below.
  29.      - ; highlighting as an OPERATOR does not work.
  30.     Known bugs (Were there before, and I failed to fix them):
  31.      - \c escape colouring does not work for escapes embedded in words.
  32.            I attemted numerous workarounds using spans and regexps, but they
  33.      all seem to fail to detect anything beginning with a \. And using
  34.      NO_ESCAPE="TRUE" does not help.
  35.      - {} within quoted strings should not affect indentation. -->
  36.  
  37. <MODE>
  38.   <PROPS>
  39.     <PROPERTY NAME="indentOpenBrackets" VALUE="{" />
  40.     <PROPERTY NAME="indentCloseBrackets" VALUE="}" />
  41.     <PROPERTY NAME="lineUpClosingBracket" VALUE="true" />
  42.     <PROPERTY NAME="lineComment" VALUE="#" />
  43.   </PROPS>
  44.  
  45.   <RULES IGNORE_CASE="FALSE" HIGHLIGHT_DIGITS="TRUE"
  46.     DIGIT_RE="0x\p{XDigit}+|\d+">
  47.  
  48.     <!-- Continuation line. Processed before anything else by Tcl. (Does not work)-->
  49.     <EOL_SPAN_REGEXP TYPE="OPERATOR" HASH_CHAR="\">\\$</EOL_SPAN_REGEXP>
  50.  
  51.     <!-- Comments after a ; command separator -->
  52.     <!-- Note: The ; isn't bolded as other operators. Why?-->
  53.     <EOL_SPAN_REGEXP TYPE="OPERATOR" HASH_CHAR=";" DELEGATE="TCL_COMMENT">;\s*(?=#)</EOL_SPAN_REGEXP>
  54.     <!-- Comments at the { opening of a block -->
  55.     <SPAN_REGEXP TYPE="OPERATOR" HASH_CHAR="{" DELEGATE="TCL_COMMENT">
  56.       <BEGIN>\{\s*(?=#)</BEGIN>
  57.       <END>}</END>
  58.     </SPAN_REGEXP>
  59.     <!-- Comments on a line of their own. -->
  60.     <EOL_SPAN TYPE="COMMENT1" AT_WHITESPACE_END="TRUE">#</EOL_SPAN>
  61.  
  62.     <!-- Quoted strings -->
  63.     <SPAN TYPE="LITERAL1" NO_LINE_BREAK="FALSE" AT_WORD_START="TRUE" DELEGATE="TCL_STRING">
  64.       <BEGIN>"</BEGIN>
  65.       <END>"</END>
  66.     </SPAN>
  67.  
  68.     <!-- Avoid colouring substituted variables that are homonyms of a keyword -->
  69.     <!-- Indexed array variable. Delegate to MAIN, as the index string is evaluated by Tcl.-->
  70.     <SPAN_REGEXP TYPE="NULL" HASH_CHAR="$" DELEGATE="MAIN">
  71.       <BEGIN>\$(\w|::)+\(</BEGIN>
  72.       <END>)</END>
  73.     </SPAN_REGEXP>
  74.     <!-- General scalar variable. Do not delegate, as the ${} block content is not evalutated by Tcl. -->
  75.     <SPAN TYPE="NULL">
  76.       <BEGIN>${</BEGIN>
  77.       <END>}</END>
  78.     </SPAN>
  79.     <!-- Plain scalar variable. -->
  80.     <SEQ_REGEXP TYPE="NULL" HASH_CHAR="$">\$(\w|::)+</SEQ_REGEXP>
  81.  
  82.     <!-- Sub-block -->
  83.     <SPAN TYPE="OPERATOR" NO_LINE_BREAK="FALSE" AT_WORD_START="TRUE" DELEGATE="MAIN">
  84.       <BEGIN>{</BEGIN>
  85.       <END>}</END>
  86.     </SPAN>
  87.  
  88.     <!-- Sub-commands to be substituted -->
  89.     <SPAN TYPE="OPERATOR" NO_LINE_BREAK="FALSE" DELEGATE="MAIN">
  90.       <BEGIN>[</BEGIN>
  91.       <END>]</END>
  92.     </SPAN>
  93.  
  94.     <!-- Escaped characters -->
  95.     <SEQ TYPE="KEYWORD3">\a</SEQ>
  96.     <SEQ TYPE="KEYWORD3">\b</SEQ>
  97.     <SEQ TYPE="KEYWORD3">\f</SEQ>
  98.     <SEQ TYPE="KEYWORD3">\n</SEQ>
  99.     <SEQ TYPE="KEYWORD3">\r</SEQ>
  100.     <SEQ TYPE="KEYWORD3">\t</SEQ>
  101.     <SEQ TYPE="KEYWORD3">\v</SEQ>
  102.  
  103.     <!-- Tcl syntax operators. -->
  104.     <!-- Note that "{}[]" are already caught above.-->
  105.     <!-- Delegate to main, as a new command begins after the ; -->
  106.     <SEQ TYPE="OPERATOR" DELEGATE="MAIN">;</SEQ>
  107.     <SEQ TYPE="NULL">::</SEQ>
  108.  
  109.     <!-- Math expression operators -->
  110.     <SEQ TYPE="OPERATOR">=</SEQ>
  111.     <SEQ TYPE="OPERATOR">!</SEQ>
  112.     <SEQ TYPE="OPERATOR">>=</SEQ>
  113.     <SEQ TYPE="OPERATOR"><=</SEQ>
  114.     <SEQ TYPE="OPERATOR">+</SEQ>
  115.     <SEQ TYPE="OPERATOR">-</SEQ>
  116.     <SEQ TYPE="OPERATOR">/</SEQ>
  117.     <SEQ TYPE="OPERATOR">*</SEQ>
  118.     <SEQ TYPE="OPERATOR">></SEQ>
  119.     <SEQ TYPE="OPERATOR"><</SEQ>
  120.     <SEQ TYPE="OPERATOR">%</SEQ>
  121.     <SEQ TYPE="OPERATOR">&</SEQ>
  122.     <SEQ TYPE="OPERATOR">|</SEQ>
  123.     <SEQ TYPE="OPERATOR">^</SEQ>
  124.     <SEQ TYPE="OPERATOR">~</SEQ>
  125.  
  126.     <KEYWORDS>
  127.       <!-- Tcl keywords-->
  128.       <KEYWORD1>append</KEYWORD1>
  129.       <KEYWORD1>array</KEYWORD1>
  130.       <KEYWORD1>concat</KEYWORD1>
  131.       <KEYWORD1>console</KEYWORD1>
  132.       <KEYWORD1>eval</KEYWORD1>
  133.       <KEYWORD1>expr</KEYWORD1>
  134.       <KEYWORD1>format</KEYWORD1>
  135.       <KEYWORD1>global</KEYWORD1>
  136.       <KEYWORD1>set</KEYWORD1>
  137.       <KEYWORD1>trace</KEYWORD1>
  138.       <KEYWORD1>unset</KEYWORD1>
  139.       <KEYWORD1>upvar</KEYWORD1>
  140.       <KEYWORD1>join</KEYWORD1>
  141.       <KEYWORD1>lappend</KEYWORD1>
  142.       <KEYWORD1>lindex</KEYWORD1>
  143.       <KEYWORD1>linsert</KEYWORD1>
  144.       <KEYWORD1>list</KEYWORD1>
  145.       <KEYWORD1>llength</KEYWORD1>
  146.       <KEYWORD1>lrange</KEYWORD1>
  147.       <KEYWORD1>lreplace</KEYWORD1>
  148.       <KEYWORD1>lsearch</KEYWORD1>
  149.       <KEYWORD1>lsort</KEYWORD1>
  150.       <KEYWORD1>split</KEYWORD1>
  151.       <KEYWORD1>scan</KEYWORD1>
  152.       <KEYWORD1>string</KEYWORD1>
  153.       <KEYWORD1>regexp</KEYWORD1>
  154.       <KEYWORD1>regsub</KEYWORD1>
  155.       <KEYWORD1>if</KEYWORD1>
  156.       <KEYWORD1>else</KEYWORD1>
  157.       <KEYWORD1>elseif</KEYWORD1>
  158.       <KEYWORD1>switch</KEYWORD1>
  159.       <KEYWORD1>for</KEYWORD1>
  160.       <KEYWORD1>foreach</KEYWORD1>
  161.       <KEYWORD1>while</KEYWORD1>
  162.       <KEYWORD1>break</KEYWORD1>
  163.       <KEYWORD1>continue</KEYWORD1>
  164.       <KEYWORD1>proc</KEYWORD1>
  165.       <KEYWORD1>return</KEYWORD1>
  166.       <KEYWORD1>source</KEYWORD1>
  167.       <KEYWORD1>unknown</KEYWORD1>
  168.       <KEYWORD1>uplevel</KEYWORD1>
  169.       <KEYWORD1>cd</KEYWORD1>
  170.       <KEYWORD1>close</KEYWORD1>
  171.       <KEYWORD1>eof</KEYWORD1>
  172.       <KEYWORD1>file</KEYWORD1>
  173.       <KEYWORD1>flush</KEYWORD1>
  174.       <KEYWORD1>gets</KEYWORD1>
  175.       <KEYWORD1>glob</KEYWORD1>
  176.       <KEYWORD1>open</KEYWORD1>
  177.       <KEYWORD1>read</KEYWORD1>
  178.       <KEYWORD1>puts</KEYWORD1>
  179.       <KEYWORD1>pwd</KEYWORD1>
  180.       <KEYWORD1>seek</KEYWORD1>
  181.       <KEYWORD1>tell</KEYWORD1>
  182.       <KEYWORD1>catch</KEYWORD1>
  183.       <KEYWORD1>error</KEYWORD1>
  184.       <KEYWORD1>exec</KEYWORD1>
  185.       <KEYWORD1>pid</KEYWORD1>
  186.       <KEYWORD1>after</KEYWORD1>
  187.       <KEYWORD1>time</KEYWORD1>
  188.       <KEYWORD1>exit</KEYWORD1>
  189.       <KEYWORD1>history</KEYWORD1>
  190.       <KEYWORD1>rename</KEYWORD1>
  191.       <KEYWORD1>info</KEYWORD1>
  192.       <!-- expr keywords-->
  193.       <KEYWORD1>ceil</KEYWORD1>
  194.       <KEYWORD1>floor</KEYWORD1>
  195.       <KEYWORD1>round</KEYWORD1>
  196.       <KEYWORD1>incr</KEYWORD1>
  197.       <KEYWORD1>abs</KEYWORD1>
  198.       <KEYWORD1>acos</KEYWORD1>
  199.       <KEYWORD1>cos</KEYWORD1>
  200.       <KEYWORD1>cosh</KEYWORD1>
  201.       <KEYWORD1>asin</KEYWORD1>
  202.       <KEYWORD1>sin</KEYWORD1>
  203.       <KEYWORD1>sinh</KEYWORD1>
  204.       <KEYWORD1>atan</KEYWORD1>
  205.       <KEYWORD1>atan2</KEYWORD1>
  206.       <KEYWORD1>tan</KEYWORD1>
  207.       <KEYWORD1>tanh</KEYWORD1>
  208.       <KEYWORD1>log</KEYWORD1>
  209.       <KEYWORD1>log10</KEYWORD1>
  210.       <KEYWORD1>fmod</KEYWORD1>
  211.       <KEYWORD1>pow</KEYWORD1>
  212.       <KEYWORD1>hypot</KEYWORD1>
  213.       <KEYWORD1>sqrt</KEYWORD1>
  214.       <KEYWORD1>double</KEYWORD1>
  215.       <KEYWORD1>int</KEYWORD1>
  216.       <!-- New Tcl keywords up to tcl 8.4.14 -->
  217.       <KEYWORD1>bgerror</KEYWORD1>
  218.       <KEYWORD1>binary</KEYWORD1>
  219.       <KEYWORD1>clock</KEYWORD1>
  220.       <KEYWORD1>dde</KEYWORD1>
  221.       <KEYWORD1>encoding</KEYWORD1>
  222.       <KEYWORD1>fblocked</KEYWORD1>
  223.       <KEYWORD1>fconfigure</KEYWORD1>
  224.       <KEYWORD1>fcopy</KEYWORD1>
  225.       <KEYWORD1>fileevent</KEYWORD1>
  226.       <KEYWORD1>filename</KEYWORD1>
  227.       <KEYWORD1>http</KEYWORD1>
  228.       <KEYWORD1>interp</KEYWORD1>
  229.       <KEYWORD1>load</KEYWORD1>
  230.       <KEYWORD1>lset</KEYWORD1>
  231.       <KEYWORD1>memory</KEYWORD1>
  232.       <KEYWORD1>msgcat</KEYWORD1>
  233.       <KEYWORD1>namespace</KEYWORD1>
  234.       <KEYWORD1>package</KEYWORD1>
  235.       <KEYWORD1>pkg::create</KEYWORD1>
  236.       <KEYWORD1>pkg_mkIndex</KEYWORD1>
  237.       <KEYWORD1>registry</KEYWORD1>
  238.       <KEYWORD1>resource</KEYWORD1>
  239.       <KEYWORD1>socket</KEYWORD1>
  240.       <KEYWORD1>subst</KEYWORD1>
  241.       <KEYWORD1>update</KEYWORD1>
  242.       <KEYWORD1>variable</KEYWORD1>
  243.       <KEYWORD1>vwait</KEYWORD1>
  244.       <!-- Standard library of Tcl interpretor procedures -->
  245.       <KEYWORD1>auto_execok</KEYWORD1>
  246.       <KEYWORD1>auto_import</KEYWORD1>
  247.       <KEYWORD1>auto_load</KEYWORD1>
  248.       <KEYWORD1>auto_mkindex</KEYWORD1>
  249.       <KEYWORD1>auto_mkindex_old</KEYWORD1>
  250.       <KEYWORD1>auto_qualify</KEYWORD1>
  251.       <KEYWORD1>auto_reset</KEYWORD1>
  252.       <KEYWORD1>parray</KEYWORD1>
  253.       <KEYWORD1>tcl_endOfWord</KEYWORD1>
  254.       <KEYWORD1>tcl_findLibrary</KEYWORD1>
  255.       <KEYWORD1>tcl_startOfNextWord</KEYWORD1>
  256.       <KEYWORD1>tcl_startOfPreviousWord</KEYWORD1>
  257.       <KEYWORD1>tcl_wordBreakAfter</KEYWORD1>
  258.       <KEYWORD1>tcl_wordBreakBefore</KEYWORD1>
  259.  
  260.       <!-- Tk keywords -->
  261.       <KEYWORD2>bind</KEYWORD2>
  262.       <KEYWORD2>button</KEYWORD2>
  263.       <KEYWORD2>canvas</KEYWORD2>
  264.       <KEYWORD2>checkbutton</KEYWORD2>
  265.       <KEYWORD2>destroy</KEYWORD2>
  266.       <KEYWORD2>entry</KEYWORD2>
  267.       <KEYWORD2>focus</KEYWORD2>
  268.       <KEYWORD2>frame</KEYWORD2>
  269.       <KEYWORD2>grab</KEYWORD2>
  270.       <KEYWORD2>image</KEYWORD2>
  271.       <KEYWORD2>label</KEYWORD2>
  272.       <KEYWORD2>listbox</KEYWORD2>
  273.       <KEYWORD2>lower</KEYWORD2>
  274.       <KEYWORD2>menu</KEYWORD2>
  275.       <KEYWORD2>menubutton</KEYWORD2>
  276.       <KEYWORD2>message</KEYWORD2>
  277.       <KEYWORD2>option</KEYWORD2>
  278.       <KEYWORD2>pack</KEYWORD2>
  279.       <KEYWORD2>placer</KEYWORD2>
  280.       <KEYWORD2>radiobutton</KEYWORD2>
  281.       <KEYWORD2>raise</KEYWORD2>
  282.       <KEYWORD2>scale</KEYWORD2>
  283.       <KEYWORD2>scrollbar</KEYWORD2>
  284.       <KEYWORD2>selection</KEYWORD2>
  285.       <KEYWORD2>send</KEYWORD2>
  286.       <KEYWORD2>text</KEYWORD2>
  287.       <KEYWORD2>tk</KEYWORD2>
  288.       <KEYWORD2>tkerror</KEYWORD2>
  289.       <KEYWORD2>tkwait</KEYWORD2>
  290.       <KEYWORD2>toplevel</KEYWORD2>
  291.       <KEYWORD2>update</KEYWORD2>
  292.       <KEYWORD2>winfo</KEYWORD2>
  293.       <KEYWORD2>wm</KEYWORD2>
  294.  
  295.       <!-- Expect keywords. Using KEYWORD2 as send is already one -->
  296.       <!-- KEYWORD2 close -->
  297.       <KEYWORD2>debug</KEYWORD2>
  298.       <KEYWORD2>disconnect</KEYWORD2>
  299.       <!-- KEYWORD2 exit -->
  300.       <KEYWORD2>exp_continue</KEYWORD2>
  301.       <KEYWORD2>exp_internal</KEYWORD2>
  302.       <KEYWORD2>exp_open</KEYWORD2>
  303.       <KEYWORD2>exp_pid</KEYWORD2>
  304.       <KEYWORD2>exp_version</KEYWORD2>
  305.       <KEYWORD2>expect</KEYWORD2>
  306.       <KEYWORD2>expect_after</KEYWORD2>
  307.       <KEYWORD2>expect_background</KEYWORD2>
  308.       <KEYWORD2>expect_before</KEYWORD2>
  309.       <KEYWORD2>expect_tty</KEYWORD2>
  310.       <KEYWORD2>expect_user</KEYWORD2>
  311.       <KEYWORD2>fork</KEYWORD2>
  312.       <KEYWORD2>inter_return</KEYWORD2>
  313.       <KEYWORD2>interact</KEYWORD2>
  314.       <KEYWORD2>interpreter</KEYWORD2>
  315.       <KEYWORD2>log_file</KEYWORD2>
  316.       <KEYWORD2>log_user</KEYWORD2>
  317.       <KEYWORD2>match_max</KEYWORD2>
  318.       <KEYWORD2>overlay</KEYWORD2>
  319.       <KEYWORD2>parity</KEYWORD2>
  320.       <KEYWORD2>promptl</KEYWORD2>
  321.       <KEYWORD2>prompt2</KEYWORD2>
  322.       <KEYWORD2>remove_nulls</KEYWORD2>
  323.       <!-- KEYWORD2 send -->
  324.       <KEYWORD2>send_error </KEYWORD2>
  325.       <KEYWORD2>send_log</KEYWORD2>
  326.       <KEYWORD2>send_tty</KEYWORD2>
  327.       <KEYWORD2>send_user</KEYWORD2>
  328.       <KEYWORD2>sleep</KEYWORD2>
  329.       <KEYWORD2>spawn</KEYWORD2>
  330.       <KEYWORD2>strace</KEYWORD2>
  331.       <KEYWORD2>stty</KEYWORD2>
  332.       <KEYWORD2>system</KEYWORD2>
  333.       <KEYWORD2>timestamp</KEYWORD2>
  334.       <KEYWORD2>trap</KEYWORD2>
  335.       <KEYWORD2>wait</KEYWORD2>
  336.       <!-- Arguments to expect commands-->
  337.       <KEYWORD3>full_buffer</KEYWORD3>
  338.       <KEYWORD3>timeout</KEYWORD3>
  339.       <!-- KEYWORD3 eof-->
  340.  
  341.       <!-- Global variables-->
  342.       <KEYWORD3>argv0</KEYWORD3>
  343.       <KEYWORD3>argv</KEYWORD3>
  344.       <KEYWORD3>argc</KEYWORD3>
  345.       <KEYWORD3>tk_version</KEYWORD3>
  346.       <KEYWORD3>tk_library</KEYWORD3>
  347.       <KEYWORD3>tk_strictMotif</KEYWORD3>
  348.       <!-- New global variables up to tcl 8.4.14 -->
  349.       <KEYWORD3>env</KEYWORD3>
  350.       <KEYWORD3>errorCode</KEYWORD3>
  351.       <KEYWORD3>errorInfo</KEYWORD3>
  352.       <KEYWORD3>geometry</KEYWORD3>
  353.       <KEYWORD3>tcl_library</KEYWORD3>
  354.       <KEYWORD3>tcl_patchLevel</KEYWORD3>
  355.       <KEYWORD3>tcl_pkgPath</KEYWORD3>
  356.       <KEYWORD3>tcl_platform</KEYWORD3>
  357.       <KEYWORD3>tcl_precision</KEYWORD3>
  358.       <KEYWORD3>tcl_rcFileName</KEYWORD3>
  359.       <KEYWORD3>tcl_rcRsrcName</KEYWORD3>
  360.       <KEYWORD3>tcl_traceCompile</KEYWORD3>
  361.       <KEYWORD3>tcl_traceExec</KEYWORD3>
  362.       <KEYWORD3>tcl_wordchars</KEYWORD3>
  363.       <KEYWORD3>tcl_nonwordchars</KEYWORD3>
  364.       <KEYWORD3>tcl_version</KEYWORD3>
  365.       <KEYWORD3>tcl_interactive</KEYWORD3>
  366.  
  367.       <!-- Common arguments to tcl and Tk keywords -->
  368.       <KEYWORD3>exact</KEYWORD3>
  369.       <KEYWORD3>all</KEYWORD3>
  370.       <KEYWORD3>indices</KEYWORD3>
  371.       <KEYWORD3>nocase</KEYWORD3>
  372.       <KEYWORD3>nocomplain</KEYWORD3>
  373.       <KEYWORD3>nonewline</KEYWORD3>
  374.       <KEYWORD3>code</KEYWORD3>
  375.       <KEYWORD3>errorinfo</KEYWORD3>
  376.       <KEYWORD3>errorcode</KEYWORD3>
  377.       <KEYWORD3>atime</KEYWORD3>
  378.       <KEYWORD3>anymore</KEYWORD3>
  379.       <KEYWORD3>args</KEYWORD3>
  380.       <KEYWORD3>body</KEYWORD3>
  381.       <KEYWORD3>compare</KEYWORD3>
  382.       <KEYWORD3>cmdcount</KEYWORD3>
  383.       <KEYWORD3>commands</KEYWORD3>
  384.       <KEYWORD3>ctime</KEYWORD3>
  385.       <KEYWORD3>current</KEYWORD3>
  386.       <KEYWORD3>default</KEYWORD3>
  387.       <KEYWORD3>dev</KEYWORD3>
  388.       <KEYWORD3>dirname</KEYWORD3>
  389.       <KEYWORD3>donesearch</KEYWORD3>
  390.       <KEYWORD3>errorinfo</KEYWORD3>
  391.       <KEYWORD3>executable</KEYWORD3>
  392.       <KEYWORD3>extension</KEYWORD3>
  393.       <KEYWORD3>first</KEYWORD3>
  394.       <KEYWORD3>globals</KEYWORD3>
  395.       <KEYWORD3>gid</KEYWORD3>
  396.       <KEYWORD3>index</KEYWORD3>
  397.       <KEYWORD3>ino</KEYWORD3>
  398.       <KEYWORD3>isdirectory</KEYWORD3>
  399.       <KEYWORD3>isfile</KEYWORD3>
  400.       <KEYWORD3>keep</KEYWORD3>
  401.       <KEYWORD3>last</KEYWORD3>
  402.       <KEYWORD3>level</KEYWORD3>
  403.       <KEYWORD3>length</KEYWORD3>
  404.       <KEYWORD3>library</KEYWORD3>
  405.       <KEYWORD3>locals</KEYWORD3>
  406.       <KEYWORD3>lstat</KEYWORD3>
  407.       <KEYWORD3>match</KEYWORD3>
  408.       <KEYWORD3>mode</KEYWORD3>
  409.       <KEYWORD3>mtime</KEYWORD3>
  410.       <KEYWORD3>names</KEYWORD3>
  411.       <KEYWORD3>nextelement</KEYWORD3>
  412.       <KEYWORD3>nextid</KEYWORD3>
  413.       <KEYWORD3>nlink</KEYWORD3>
  414.       <KEYWORD3>none</KEYWORD3>
  415.       <KEYWORD3>procs</KEYWORD3>
  416.       <KEYWORD3>owned</KEYWORD3>
  417.       <KEYWORD3>range</KEYWORD3>
  418.       <KEYWORD3>readable</KEYWORD3>
  419.       <KEYWORD3>readlink</KEYWORD3>
  420.       <KEYWORD3>redo</KEYWORD3>
  421.       <KEYWORD3>release</KEYWORD3>
  422.       <KEYWORD3>rootname</KEYWORD3>
  423.       <KEYWORD3>script</KEYWORD3>
  424.       <KEYWORD3>show</KEYWORD3>
  425.       <KEYWORD3>size</KEYWORD3>
  426.       <KEYWORD3>startsearch</KEYWORD3>
  427.       <KEYWORD3>stat</KEYWORD3>
  428.       <KEYWORD3>status</KEYWORD3>
  429.       <KEYWORD3>substitute</KEYWORD3>
  430.       <KEYWORD3>tail</KEYWORD3>
  431.       <KEYWORD3>tclversion</KEYWORD3>
  432.       <KEYWORD3>tolower</KEYWORD3>
  433.       <KEYWORD3>toupper</KEYWORD3>
  434.       <KEYWORD3>trim</KEYWORD3>
  435.       <KEYWORD3>trimleft</KEYWORD3>
  436.       <KEYWORD3>trimright</KEYWORD3>
  437.       <KEYWORD3>type</KEYWORD3>
  438.       <KEYWORD3>uid</KEYWORD3>
  439.       <KEYWORD3>variable</KEYWORD3>
  440.       <KEYWORD3>vars</KEYWORD3>
  441.       <KEYWORD3>vdelete</KEYWORD3>
  442.       <KEYWORD3>vinfo</KEYWORD3>
  443.       <KEYWORD3>visibility</KEYWORD3>
  444.       <KEYWORD3>window</KEYWORD3>
  445.       <KEYWORD3>writable</KEYWORD3>
  446.       <KEYWORD3>accelerator</KEYWORD3>
  447.       <KEYWORD3>activeforeground</KEYWORD3>
  448.       <KEYWORD3>activebackground</KEYWORD3>
  449.       <KEYWORD3>anchor</KEYWORD3>
  450.       <KEYWORD3>aspect</KEYWORD3>
  451.       <KEYWORD3>background</KEYWORD3>
  452.       <KEYWORD3>before</KEYWORD3>
  453.       <KEYWORD3>bg</KEYWORD3>
  454.       <KEYWORD3>borderwidth</KEYWORD3>
  455.       <KEYWORD3>bd</KEYWORD3>
  456.       <KEYWORD3>bitmap</KEYWORD3>
  457.       <KEYWORD3>command</KEYWORD3>
  458.       <KEYWORD3>cursor</KEYWORD3>
  459.       <KEYWORD3>default</KEYWORD3>
  460.       <KEYWORD3>expand</KEYWORD3>
  461.       <KEYWORD3>family</KEYWORD3>
  462.       <KEYWORD3>fg</KEYWORD3>
  463.       <KEYWORD3>fill</KEYWORD3>
  464.       <KEYWORD3>font</KEYWORD3>
  465.       <KEYWORD3>force</KEYWORD3>
  466.       <KEYWORD3>foreground</KEYWORD3>
  467.       <KEYWORD3>from</KEYWORD3>
  468.       <KEYWORD3>height</KEYWORD3>
  469.       <KEYWORD3>icon</KEYWORD3>
  470.       <KEYWORD3>question</KEYWORD3>
  471.       <KEYWORD3>warning</KEYWORD3>
  472.       <KEYWORD3>in</KEYWORD3>
  473.       <KEYWORD3>ipadx</KEYWORD3>
  474.       <KEYWORD3>ipady</KEYWORD3>
  475.       <KEYWORD3>justify</KEYWORD3>
  476.       <KEYWORD3>left</KEYWORD3>
  477.       <KEYWORD3>center</KEYWORD3>
  478.       <KEYWORD3>right</KEYWORD3>
  479.       <KEYWORD3>length</KEYWORD3>
  480.       <KEYWORD3>padx</KEYWORD3>
  481.       <KEYWORD3>pady</KEYWORD3>
  482.       <KEYWORD3>offvalue</KEYWORD3>
  483.       <KEYWORD3>onvalue</KEYWORD3>
  484.       <KEYWORD3>orient</KEYWORD3>
  485.       <KEYWORD3>horizontal</KEYWORD3>
  486.       <KEYWORD3>vertical</KEYWORD3>
  487.       <KEYWORD3>outline</KEYWORD3>
  488.       <KEYWORD3>oversrike</KEYWORD3>
  489.       <KEYWORD3>relief</KEYWORD3>
  490.       <KEYWORD3>raised</KEYWORD3>
  491.       <KEYWORD3>sunken</KEYWORD3>
  492.       <KEYWORD3>flat</KEYWORD3>
  493.       <KEYWORD3>groove</KEYWORD3>
  494.       <KEYWORD3>ridge</KEYWORD3>
  495.       <KEYWORD3>solid</KEYWORD3>
  496.       <KEYWORD3>screen</KEYWORD3>
  497.       <KEYWORD3>selectbackground</KEYWORD3>
  498.       <KEYWORD3>selectforeground</KEYWORD3>
  499.       <KEYWORD3>setgrid</KEYWORD3>
  500.       <KEYWORD3>side</KEYWORD3>
  501.       <KEYWORD3>size</KEYWORD3>
  502.       <KEYWORD3>slant</KEYWORD3>
  503.       <KEYWORD3>left</KEYWORD3>
  504.       <KEYWORD3>right</KEYWORD3>
  505.       <KEYWORD3>top</KEYWORD3>
  506.       <KEYWORD3>bottom</KEYWORD3>
  507.       <KEYWORD3>spacing1</KEYWORD3>
  508.       <KEYWORD3>spacing2</KEYWORD3>
  509.       <KEYWORD3>spacing3</KEYWORD3>
  510.       <KEYWORD3>state</KEYWORD3>
  511.       <KEYWORD3>stipple</KEYWORD3>
  512.       <KEYWORD3>takefocus</KEYWORD3>
  513.       <KEYWORD3>tearoff</KEYWORD3>
  514.       <KEYWORD3>textvariable</KEYWORD3>
  515.       <KEYWORD3>title</KEYWORD3>
  516.       <KEYWORD3>to</KEYWORD3>
  517.       <KEYWORD3>type</KEYWORD3>
  518.       <KEYWORD3>abortretryignore</KEYWORD3>
  519.       <KEYWORD3>ok</KEYWORD3>
  520.       <KEYWORD3>okcancel</KEYWORD3>
  521.       <KEYWORD3>retrycancel</KEYWORD3>
  522.       <KEYWORD3>yesno</KEYWORD3>
  523.       <KEYWORD3>yesnocancel</KEYWORD3>
  524.       <KEYWORD3>underline</KEYWORD3>
  525.       <KEYWORD3>value</KEYWORD3>
  526.       <KEYWORD3>variable</KEYWORD3>
  527.       <KEYWORD3>weight</KEYWORD3>
  528.       <KEYWORD3>width</KEYWORD3>
  529.       <KEYWORD3>xscrollcommand</KEYWORD3>
  530.       <KEYWORD3>yscrollcommand</KEYWORD3>
  531.       <KEYWORD3>active</KEYWORD3>
  532.       <KEYWORD3>add</KEYWORD3>
  533.       <KEYWORD3>arc</KEYWORD3>
  534.       <KEYWORD3>aspect</KEYWORD3>
  535.       <KEYWORD3>bitmap</KEYWORD3>
  536.       <KEYWORD3>cascade</KEYWORD3>
  537.       <KEYWORD3>cget</KEYWORD3>
  538.       <KEYWORD3>children</KEYWORD3>
  539.       <KEYWORD3>class</KEYWORD3>
  540.       <KEYWORD3>clear</KEYWORD3>
  541.       <KEYWORD3>client</KEYWORD3>
  542.       <KEYWORD3>create</KEYWORD3>
  543.       <KEYWORD3>colormodel</KEYWORD3>
  544.       <KEYWORD3>command</KEYWORD3>
  545.       <KEYWORD3>configure</KEYWORD3>
  546.       <KEYWORD3>deiconify</KEYWORD3>
  547.       <KEYWORD3>delete</KEYWORD3>
  548.       <KEYWORD3>disabled</KEYWORD3>
  549.       <KEYWORD3>exists</KEYWORD3>
  550.       <KEYWORD3>focusmodel</KEYWORD3>
  551.       <KEYWORD3>flash</KEYWORD3>
  552.       <KEYWORD3>forget</KEYWORD3>
  553.       <KEYWORD3>geometry</KEYWORD3>
  554.       <KEYWORD3>get</KEYWORD3>
  555.       <KEYWORD3>group</KEYWORD3>
  556.       <KEYWORD3>handle</KEYWORD3>
  557.       <KEYWORD3>iconbitmap</KEYWORD3>
  558.       <KEYWORD3>iconify</KEYWORD3>
  559.       <KEYWORD3>iconmask</KEYWORD3>
  560.       <KEYWORD3>iconname</KEYWORD3>
  561.       <KEYWORD3>iconposition</KEYWORD3>
  562.       <KEYWORD3>iconwindow</KEYWORD3>
  563.       <KEYWORD3>idletasks</KEYWORD3>
  564.       <KEYWORD3>insert</KEYWORD3>
  565.       <KEYWORD3>interps</KEYWORD3>
  566.       <KEYWORD3>itemconfigure</KEYWORD3>
  567.       <KEYWORD3>invoke</KEYWORD3>
  568.       <KEYWORD3>line</KEYWORD3>
  569.       <KEYWORD3>mark</KEYWORD3>
  570.       <KEYWORD3>maxsize</KEYWORD3>
  571.       <KEYWORD3>minsize</KEYWORD3>
  572.       <KEYWORD3>move</KEYWORD3>
  573.       <KEYWORD3>name</KEYWORD3>
  574.       <KEYWORD3>normal</KEYWORD3>
  575.       <KEYWORD3>overrideredirect</KEYWORD3>
  576.       <KEYWORD3>oval</KEYWORD3>
  577.       <KEYWORD3>own</KEYWORD3>
  578.       <KEYWORD3>photo</KEYWORD3>
  579.       <KEYWORD3>polygon</KEYWORD3>
  580.       <KEYWORD3>positionfrom</KEYWORD3>
  581.       <KEYWORD3>propagate</KEYWORD3>
  582.       <KEYWORD3>protocol</KEYWORD3>
  583.       <KEYWORD3>ranges</KEYWORD3>
  584.       <KEYWORD3>rectangle</KEYWORD3>
  585.       <KEYWORD3>remove</KEYWORD3>
  586.       <KEYWORD3>resizable</KEYWORD3>
  587.       <KEYWORD3>separator</KEYWORD3>
  588.       <KEYWORD3>slaves</KEYWORD3>
  589.       <KEYWORD3>sizefrom</KEYWORD3>
  590.       <KEYWORD3>state</KEYWORD3>
  591.       <KEYWORD3>tag</KEYWORD3>
  592.       <KEYWORD3>title</KEYWORD3>
  593.       <KEYWORD3>transient</KEYWORD3>
  594.       <KEYWORD3>window</KEYWORD3>
  595.       <KEYWORD3>withdraw</KEYWORD3>
  596.       <KEYWORD3>xview</KEYWORD3>
  597.       <KEYWORD3>yview</KEYWORD3>
  598.       <KEYWORD3>Activate</KEYWORD3>
  599.       <KEYWORD3>Alt</KEYWORD3>
  600.       <KEYWORD3>Any</KEYWORD3>
  601.       <KEYWORD3>B1</KEYWORD3>
  602.       <KEYWORD3>B2</KEYWORD3>
  603.       <KEYWORD3>B3</KEYWORD3>
  604.       <KEYWORD3>Button1</KEYWORD3>
  605.       <KEYWORD3>Button2</KEYWORD3>
  606.       <KEYWORD3>Button3</KEYWORD3>
  607.       <KEYWORD3>ButtonPress</KEYWORD3>
  608.       <KEYWORD3>ButtonRelease</KEYWORD3>
  609.       <KEYWORD3>Double</KEYWORD3>
  610.       <KEYWORD3>Circulate</KEYWORD3>
  611.       <KEYWORD3>Colormap</KEYWORD3>
  612.       <KEYWORD3>Configure</KEYWORD3>
  613.       <KEYWORD3>Control</KEYWORD3>
  614.       <KEYWORD3>Deactivate</KEYWORD3>
  615.       <KEYWORD3>Escape</KEYWORD3>
  616.       <KEYWORD3>Expose</KEYWORD3>
  617.       <KEYWORD3>FocusIn</KEYWORD3>
  618.       <KEYWORD3>FocusOut</KEYWORD3>
  619.       <KEYWORD3>Gravity</KEYWORD3>
  620.       <KEYWORD3>Key</KEYWORD3>
  621.       <KEYWORD3>KeyPress</KEYWORD3>
  622.       <KEYWORD3>KeyRelease</KEYWORD3>
  623.       <KEYWORD3>Lock</KEYWORD3>
  624.       <KEYWORD3>Meta</KEYWORD3>
  625.       <KEYWORD3>Property</KEYWORD3>
  626.       <KEYWORD3>Reparent</KEYWORD3>
  627.       <KEYWORD3>Shift</KEYWORD3>
  628.       <KEYWORD3>Unmap</KEYWORD3>
  629.       <KEYWORD3>Visibility</KEYWORD3>
  630.       <KEYWORD3>Button</KEYWORD3>
  631.       <KEYWORD3>ButtonPress</KEYWORD3>
  632.       <KEYWORD3>ButtonRelease</KEYWORD3>
  633.       <KEYWORD3>Destroy</KEYWORD3>
  634.       <KEYWORD3>Escape</KEYWORD3>
  635.       <KEYWORD3>Enter</KEYWORD3>
  636.       <KEYWORD3>Leave</KEYWORD3>
  637.       <KEYWORD3>Motion</KEYWORD3>
  638.       <KEYWORD3>MenuSelect</KEYWORD3>
  639.       <KEYWORD3>Triple</KEYWORD3>
  640.       <KEYWORD3>all</KEYWORD3>
  641.     </KEYWORDS>
  642.   </RULES>
  643.  
  644.   <RULES SET="TCL_COMMENT" DEFAULT="OPERATOR">
  645.     <!-- Allows catching blocks starting with a comment.
  646.         or comments following a ; -->
  647.     <SEQ_REGEXP TYPE="COMMENT1" HASH_CHAR="#" DELEGATE="MAIN">#.*</SEQ_REGEXP>
  648.   </RULES>
  649.  
  650.   <RULES SET="TCL_STRING" DEFAULT="LITERAL1" ESCAPE="\">
  651.     <PROPS>
  652.       <PROPERTY NAME="indentOpenBrackets" VALUE="" />
  653.       <PROPERTY NAME="indentCloseBrackets" VALUE="" />
  654.     </PROPS>
  655.  
  656.     <!-- Continuation line. Processed before anything else by Tcl.-->
  657.     <EOL_SPAN_REGEXP TYPE="OPERATOR" HASH_CHAR="\">\\$</EOL_SPAN_REGEXP>
  658.  
  659.     <!-- Avoid colouring variables substituted inside strings -->
  660.     <SPAN_REGEXP TYPE="NULL" HASH_CHAR="$" DELEGATE="MAIN">
  661.       <BEGIN>\$(\w|::)+\(</BEGIN>
  662.       <END>)</END>
  663.     </SPAN_REGEXP>
  664.     <SPAN_REGEXP TYPE="NULL" HASH_CHAR="$" DELEGATE="MAIN">
  665.       <BEGIN>\$\{</BEGIN>
  666.       <END>}</END>
  667.     </SPAN_REGEXP>
  668.     <SEQ_REGEXP TYPE="NULL" HASH_CHAR="$">\$(\w|::)+</SEQ_REGEXP>
  669.  
  670.     <!-- Sub-commands to be substituted -->
  671.     <SPAN TYPE="OPERATOR" NO_LINE_BREAK="FALSE" DELEGATE="MAIN">
  672.       <BEGIN>[</BEGIN>
  673.       <END>]</END>
  674.     </SPAN>
  675.  
  676.     <!-- Escaped characters -->
  677.     <SEQ TYPE="KEYWORD3">\a</SEQ>
  678.     <SEQ TYPE="KEYWORD3">\b</SEQ>
  679.     <SEQ TYPE="KEYWORD3">\f</SEQ>
  680.     <SEQ TYPE="KEYWORD3">\n</SEQ>
  681.     <SEQ TYPE="KEYWORD3">\r</SEQ>
  682.     <SEQ TYPE="KEYWORD3">\t</SEQ>
  683.     <SEQ TYPE="KEYWORD3">\v</SEQ>
  684.   </RULES>
  685. </MODE>
  686.